diff --git a/notifier/notifier.go b/notifier/notifier.go
index 3d2ee5949..aa000dcf9 100644
--- a/notifier/notifier.go
+++ b/notifier/notifier.go
@@ -135,6 +135,7 @@ type alertMetrics struct {
 	latency                 *prometheus.SummaryVec
 	errors                  *prometheus.CounterVec
 	sent                    *prometheus.CounterVec
+	successfullySent        *prometheus.CounterVec
 	dropped                 prometheus.Counter
 	queueLength             prometheus.GaugeFunc
 	queueCapacity           prometheus.Gauge
@@ -168,6 +169,12 @@ func newAlertMetrics(r prometheus.Registerer, queueCap int, queueLen, alertmanag
 		},
 			[]string{alertmanagerLabel},
 		),
+		successfullySent: prometheus.NewCounterVec(prometheus.CounterOpts{
+			Namespace: namespace,
+			Subsystem: subsystem,
+			Name:      "successfully_sent_total",
+			Help:      "Total number of successfully sent alerts.",
+		}, []string{alertmanagerLabel}),
 		dropped: prometheus.NewCounter(prometheus.CounterOpts{
 			Namespace: namespace,
 			Subsystem: subsystem,
@@ -199,6 +206,7 @@ func newAlertMetrics(r prometheus.Registerer, queueCap int, queueLen, alertmanag
 			m.latency,
 			m.errors,
 			m.sent,
+			m.successfullySent,
 			m.dropped,
 			m.queueLength,
 			m.queueCapacity,
@@ -535,6 +543,7 @@ func (n *Manager) sendAll(alerts ...*Alert) bool {
 					n.metrics.errors.WithLabelValues(url).Inc()
 				} else {
 					numSuccess.Inc()
+					n.metrics.successfullySent.WithLabelValues(url).Add(float64(len(alerts)))
 				}
 				n.metrics.latency.WithLabelValues(url).Observe(time.Since(begin).Seconds())
 				n.metrics.sent.WithLabelValues(url).Add(float64(len(alerts)))
@@ -687,6 +696,7 @@ func (s *alertmanagerSet) sync(tgs []*targetgroup.Group) {
 		// This will initialize the Counters for the AM to 0.
 		s.metrics.sent.WithLabelValues(us)
 		s.metrics.errors.WithLabelValues(us)
+		s.metrics.successfullySent.WithLabelValues(us)

 		seen[us] = struct{}{}
 		s.ams = append(s.ams, am)
